﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AcadPos.Entity;
using TrustX.Dados;
using System.Data;

namespace AcadPos.Data
{
    public class DBModuloCurriculo
    {
        #region Inserir
        public bool inserir(ModuloCurriculo moduloCurriculo, string usuario)
        {
            string SQL = @"exec SP_INSERE_MODULO_CURRICULO
                                    @ID_CURRICULO,
                                    @ID_MODULO,
                                    @SITUACAO,
                                    @ORDEM";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURRICULO", SqlDbType.Int, moduloCurriculo.IdCurriculo);
            db.AddParam("@ID_MODULO", SqlDbType.Int, moduloCurriculo.IdModulo);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, moduloCurriculo.Situacao);
            db.AddParam("@ORDEM", SqlDbType.Int, moduloCurriculo.Ordem);
            //return db.ExecuteNonQuery();
            
            bool inseriu = db.ExecuteNonQuery();
            
            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'INSERT',
                        'TB_MODULO_CURRICULO',
                        ((SELECT CAST(MAX(ID_MODULO_CURRICULO) AS VARCHAR) FROM TB_MODULO_CURRICULO)
                        + ' | ' + CAST(@ID_CURRICULO AS VARCHAR) 
                        + ' | ' + CAST(@ID_MODULO AS VARCHAR) 
                        + ' | ' + UPPER(@SITUACAO)),
                        UPPER(@USUARIO),
                        GETDATE()
                      )";
                db = new DataAccess(SQL);
                db.AddParam("@ID_CURRICULO", SqlDbType.Int, moduloCurriculo.IdCurriculo);
                db.AddParam("@ID_MODULO", SqlDbType.VarChar, moduloCurriculo.IdModulo);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, moduloCurriculo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return inseriu;

        }
        #endregion

        #region Alterar
        public bool alterar(ModuloCurriculo moduloCurriculo, string usuario)
        {
            string SQL = @"   exec SP_ALTERA_MODULO_CURRICULO
                                    @ID_MODULO_CURRICULO,
                                    @ID_CURRICULO,
                                    @ID_MODULO,
                                    @SITUACAO,
                                    @ORDEM";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_MODULO_CURRICULO", SqlDbType.Int, moduloCurriculo.IdModuloCurriculo);
            db.AddParam("@ID_CURRICULO", SqlDbType.Int, moduloCurriculo.IdCurriculo);
            db.AddParam("@ID_MODULO", SqlDbType.Int, moduloCurriculo.IdModulo);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, moduloCurriculo.Situacao);
            db.AddParam("@ORDEM", SqlDbType.Int, moduloCurriculo.Ordem);
            //return db.ExecuteNonQuery();
            
            bool atualizou = db.ExecuteNonQuery();
            
            if (atualizou)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'UPDATE',
                        'TB_MODULO_CURRICULO',
                        (CAST(@ID_MODULO_CURRICULO AS VARCHAR)
                        + ' | ' + CAST(@ID_CURRICULO AS VARCHAR) 
                        + ' | ' + CAST(@ID_MODULO AS VARCHAR) 
                        + ' | ' + UPPER(@SITUACAO)),
                        UPPER(@USUARIO),
                        GETDATE()
                      )";
                db = new DataAccess(SQL);
                db.AddParam("@ID_MODULO_CURRICULO", SqlDbType.Int, moduloCurriculo.IdModuloCurriculo);
                db.AddParam("@ID_CURRICULO", SqlDbType.Int, moduloCurriculo.IdCurriculo);
                db.AddParam("@ID_MODULO", SqlDbType.VarChar, moduloCurriculo.IdModulo);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, moduloCurriculo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return atualizou;
        }
        #endregion

        #region Excluir
        public bool excluir(ModuloCurriculo moduloCurriculo, string usuario)
        {
            string SQL = @"DELETE 
                            FROM   TB_MODULO_CURRICULO
                                WHERE  ID_MODULO_CURRICULO = @ID_MODULO_CURRICULO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_MODULO_CURRICULO", SqlDbType.Int, moduloCurriculo.IdModuloCurriculo);
            //return db.ExecuteNonQuery();
            
            bool excluiu = db.ExecuteNonQuery();
            
            if (excluiu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'DELETE',
                        'TB_MODULO_CURRICULO',
                        (CAST(@ID_MODULO_CURRICULO AS VARCHAR)
                        + ' | ' + CAST(@ID_CURRICULO AS VARCHAR) 
                        + ' | ' + CAST(@ID_MODULO AS VARCHAR) 
                        + ' | ' + UPPER(@SITUACAO)),
                        UPPER(@USUARIO),
                        GETDATE()
                      )";
                db = new DataAccess(SQL);
                db.AddParam("@ID_MODULO_CURRICULO", SqlDbType.Int, moduloCurriculo.IdModuloCurriculo);
                db.AddParam("@ID_CURRICULO", SqlDbType.Int, moduloCurriculo.IdCurriculo);
                db.AddParam("@ID_MODULO", SqlDbType.VarChar, moduloCurriculo.IdModulo);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, moduloCurriculo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return excluiu;
        }
        #endregion

        #region Lista Módulos por Currículo
        public DataTable listaModulosCurriculo(ModuloCurriculo moduloCurriculo)
        {
            string SQL = @"SELECT  tmc.ID_MODULO_CURRICULO,
                                   tmc.ID_CURRICULO,
                                   tmc.ID_MODULO,
                                   tmc.SITUACAO,
                                   tc.ID_CURSO,
                                   tc.CURRICULO,
                                   tc.SITUACAO,tmc.ORDEM,
                                   tm.DESCRICAO AS DESCRICAO_MODULO,
                                   CASE LTRIM(RTRIM(tmc.SITUACAO))
                                        WHEN 'A' THEN CONVERT(VARCHAR, tm.DESCRICAO) + ' (Ativo)'
                                        WHEN 'I' THEN CONVERT(VARCHAR, tm.DESCRICAO) + ' (Inativo)'
                                   END           AS MODULO_SITUACAO
                            FROM   TB_MODULO_CURRICULO tmc
                                   INNER JOIN TB_CURRICULO tc
                                        ON  tc.ID_CURRICULO = tmc.ID_CURRICULO
                                   INNER JOIN TB_MODULO tm
                                        ON  tm.ID_MODULO = tmc.ID_MODULO
                            WHERE  tmc.ID_CURRICULO = @ID_CURRICULO order by tmc.ORDEM ";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURRICULO", SqlDbType.Int, moduloCurriculo.IdCurriculo);
            return db.GetDataTable();
        }
        #endregion
    }
}
